package com.shycloud.mido.member.api.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员订单管理
 *
 * @author nianhua.jiang
 * @date 2020/7/8 15:58
 */
@Data
@TableName("sm_member_order")
@EqualsAndHashCode(callSuper = true)
public class MemberOrder extends Model<MemberOrder> {

	private static final long serialVersionUID = 1L;
	/** id 雪花算法生成全局唯一订单编号 */
	@TableId(value = "order_no", type = IdType.INPUT)
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long orderNo;
	/** 会员 id */
	private String memberId;
	/** 订单类型 1. 虚拟币购买 2. VIP 购买 3. 商城购买 5. 直播间付费 6. 录播付费 7. 教辅权限付费 8.机构购买课时 9. 硬件押金 10. 合作商缴费  11.续费 12.套餐支付 */
	private String orderType;
	/** 卡券id */
	private String couponId;
	/** 是否使用卡券 0-未使用 1-使用 */
	private String isCouponed;
	/** 订单金额 */
	private BigDecimal price;
	/** 支付方式 1.支付宝 2.微信 3.ios内购 */
	private String paymentMethod;
	/** 流水号 */
	private String sequenceNumber;
	/** 实收金额 */
	private BigDecimal amount;
	/** 创建时间 */
	private LocalDateTime createTime;
	/** 订单状态 0-待支付 1-已支付 2-支付失败 3-订单过期 */
	private String status;
	/** 购买会员的月份 */
	private Integer buyMonth;
	/** 购买虚拟币数量 */
	private int goldCount = 0;
	/** 运营商 ID */
	private Integer optId;
	/** 赠送打印次数 */
	private Integer givePrintCount;
	/** 商品 ID */
	private Integer goodsId;
	/** 机构 ID */
	private Integer orgId;
	/** 备注信息 */
	private String remark;
	/** 直播间付费用的直播间ID */
	private String roomId;
	/** 教师 ID */
	private String teacherId;
	/** 学生 ID */
	private String studentId;
	/** 快递收货人 */
	private String expressName;
	/** 快递联系人手机号 */
	private String expressPhone;
	/** 快递收货地址 */
	private String expressAddress;
	/** 身份证号 */
	private String identityCardNo;
	/** 关联的订单ID */
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long relationOrderNo;
	/** 商家定义的协议号（用于与协议签约表关联） */
	private String externalAgreementNo;

}
